home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Bank smakow / BankSmakow.air / BankSmakow.swf / scripts / mx / controls / Button.as < prev    next >
Text File  |  2009-12-16  |  50KB  |  1,510 lines

  1. package mx.controls
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.events.Event;
  5.    import flash.events.FocusEvent;
  6.    import flash.events.KeyboardEvent;
  7.    import flash.events.MouseEvent;
  8.    import flash.events.TimerEvent;
  9.    import flash.text.TextLineMetrics;
  10.    import flash.ui.Keyboard;
  11.    import flash.utils.Timer;
  12.    import mx.controls.dataGridClasses.DataGridListData;
  13.    import mx.controls.listClasses.BaseListData;
  14.    import mx.controls.listClasses.IDropInListItemRenderer;
  15.    import mx.controls.listClasses.IListItemRenderer;
  16.    import mx.core.EdgeMetrics;
  17.    import mx.core.FlexVersion;
  18.    import mx.core.IBorder;
  19.    import mx.core.IButton;
  20.    import mx.core.IDataRenderer;
  21.    import mx.core.IFlexAsset;
  22.    import mx.core.IFlexDisplayObject;
  23.    import mx.core.IFlexModuleFactory;
  24.    import mx.core.IFontContextComponent;
  25.    import mx.core.IInvalidating;
  26.    import mx.core.IProgrammaticSkin;
  27.    import mx.core.IRectangularBorder;
  28.    import mx.core.IStateClient;
  29.    import mx.core.IUIComponent;
  30.    import mx.core.IUITextField;
  31.    import mx.core.UIComponent;
  32.    import mx.core.UITextField;
  33.    import mx.core.mx_internal;
  34.    import mx.events.FlexEvent;
  35.    import mx.events.MoveEvent;
  36.    import mx.events.SandboxMouseEvent;
  37.    import mx.managers.IFocusManagerComponent;
  38.    import mx.styles.ISimpleStyleClient;
  39.    
  40.    use namespace mx_internal;
  41.    
  42.    public class Button extends UIComponent implements IDataRenderer, IDropInListItemRenderer, IFocusManagerComponent, IListItemRenderer, IFontContextComponent, IButton
  43.    {
  44.       
  45.       mx_internal static var createAccessibilityImplementation:Function;
  46.       
  47.       mx_internal static var TEXT_WIDTH_PADDING:Number = UITextField.TEXT_WIDTH_PADDING + 1;
  48.       
  49.       mx_internal static const VERSION:String = "3.5.0.12683";
  50.        
  51.       
  52.       mx_internal var _emphasized:Boolean = false;
  53.       
  54.       mx_internal var extraSpacing:Number = 20.0;
  55.       
  56.       private var icons:Array;
  57.       
  58.       public var selectedField:String = null;
  59.       
  60.       private var labelChanged:Boolean = false;
  61.       
  62.       private var skinMeasuredWidth:Number;
  63.       
  64.       mx_internal var checkedDefaultSkin:Boolean = false;
  65.       
  66.       private var autoRepeatTimer:Timer;
  67.       
  68.       mx_internal var disabledIconName:String = "disabledIcon";
  69.       
  70.       mx_internal var disabledSkinName:String = "disabledSkin";
  71.       
  72.       mx_internal var checkedDefaultIcon:Boolean = false;
  73.       
  74.       public var stickyHighlighting:Boolean = false;
  75.       
  76.       private var enabledChanged:Boolean = false;
  77.       
  78.       mx_internal var selectedUpIconName:String = "selectedUpIcon";
  79.       
  80.       mx_internal var selectedUpSkinName:String = "selectedUpSkin";
  81.       
  82.       mx_internal var upIconName:String = "upIcon";
  83.       
  84.       mx_internal var upSkinName:String = "upSkin";
  85.       
  86.       mx_internal var centerContent:Boolean = true;
  87.       
  88.       mx_internal var buttonOffset:Number = 0;
  89.       
  90.       private var skinMeasuredHeight:Number;
  91.       
  92.       private var oldUnscaledWidth:Number;
  93.       
  94.       mx_internal var downIconName:String = "downIcon";
  95.       
  96.       mx_internal var _labelPlacement:String = "right";
  97.       
  98.       mx_internal var downSkinName:String = "downSkin";
  99.       
  100.       mx_internal var _toggle:Boolean = false;
  101.       
  102.       private var _phase:String = "up";
  103.       
  104.       private var toolTipSet:Boolean = false;
  105.       
  106.       private var _data:Object;
  107.       
  108.       mx_internal var currentIcon:IFlexDisplayObject;
  109.       
  110.       mx_internal var currentSkin:IFlexDisplayObject;
  111.       
  112.       mx_internal var overIconName:String = "overIcon";
  113.       
  114.       mx_internal var selectedDownIconName:String = "selectedDownIcon";
  115.       
  116.       mx_internal var overSkinName:String = "overSkin";
  117.       
  118.       mx_internal var iconName:String = "icon";
  119.       
  120.       mx_internal var skinName:String = "skin";
  121.       
  122.       mx_internal var selectedDownSkinName:String = "selectedDownSkin";
  123.       
  124.       private var skins:Array;
  125.       
  126.       private var selectedSet:Boolean;
  127.       
  128.       private var _autoRepeat:Boolean = false;
  129.       
  130.       private var styleChangedFlag:Boolean = true;
  131.       
  132.       mx_internal var selectedOverIconName:String = "selectedOverIcon";
  133.       
  134.       private var _listData:BaseListData;
  135.       
  136.       mx_internal var selectedOverSkinName:String = "selectedOverSkin";
  137.       
  138.       protected var textField:IUITextField;
  139.       
  140.       private var labelSet:Boolean;
  141.       
  142.       mx_internal var defaultIconUsesStates:Boolean = false;
  143.       
  144.       mx_internal var defaultSkinUsesStates:Boolean = false;
  145.       
  146.       mx_internal var toggleChanged:Boolean = false;
  147.       
  148.       private var emphasizedChanged:Boolean = false;
  149.       
  150.       private var _label:String = "";
  151.       
  152.       mx_internal var _selected:Boolean = false;
  153.       
  154.       mx_internal var selectedDisabledIconName:String = "selectedDisabledIcon";
  155.       
  156.       mx_internal var selectedDisabledSkinName:String = "selectedDisabledSkin";
  157.       
  158.       public function Button()
  159.       {
  160.          skins = [];
  161.          icons = [];
  162.          super();
  163.          mouseChildren = false;
  164.          addEventListener(MouseEvent.ROLL_OVER,rollOverHandler);
  165.          addEventListener(MouseEvent.ROLL_OUT,rollOutHandler);
  166.          addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
  167.          addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
  168.          addEventListener(MouseEvent.CLICK,clickHandler);
  169.       }
  170.       
  171.       private function previousVersion_measure() : void
  172.       {
  173.          var bm:EdgeMetrics = null;
  174.          var lineMetrics:TextLineMetrics = null;
  175.          var paddingLeft:Number = NaN;
  176.          var paddingRight:Number = NaN;
  177.          var paddingTop:Number = NaN;
  178.          var paddingBottom:Number = NaN;
  179.          var horizontalGap:Number = NaN;
  180.          super.measure();
  181.          var textWidth:Number = 0;
  182.          var textHeight:Number = 0;
  183.          if(label)
  184.          {
  185.             lineMetrics = measureText(label);
  186.             textWidth = lineMetrics.width;
  187.             textHeight = lineMetrics.height;
  188.             paddingLeft = getStyle("paddingLeft");
  189.             paddingRight = getStyle("paddingRight");
  190.             paddingTop = getStyle("paddingTop");
  191.             paddingBottom = getStyle("paddingBottom");
  192.             textWidth += paddingLeft + paddingRight + getStyle("textIndent");
  193.             textHeight += paddingTop + paddingBottom;
  194.          }
  195.          try
  196.          {
  197.             bm = mx_internal::currentSkin["borderMetrics"];
  198.          }
  199.          catch(e:Error)
  200.          {
  201.             bm = new EdgeMetrics(3,3,3,3);
  202.          }
  203.          var tempCurrentIcon:IFlexDisplayObject = getCurrentIcon();
  204.          var iconWidth:Number = !!tempCurrentIcon ? Number(tempCurrentIcon.width) : Number(0);
  205.          var iconHeight:Number = !!tempCurrentIcon ? Number(tempCurrentIcon.height) : Number(0);
  206.          var w:Number = 0;
  207.          var h:Number = 0;
  208.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  209.          {
  210.             w = textWidth + iconWidth;
  211.             if(iconWidth != 0)
  212.             {
  213.                horizontalGap = getStyle("horizontalGap");
  214.                w += horizontalGap - 2;
  215.             }
  216.             h = Math.max(textHeight,iconHeight + 6);
  217.          }
  218.          else
  219.          {
  220.             w = Math.max(textWidth,iconWidth);
  221.             h = textHeight + iconHeight;
  222.             if(iconHeight != 0)
  223.             {
  224.                h += getStyle("verticalGap");
  225.             }
  226.          }
  227.          if(bm)
  228.          {
  229.             w += bm.left + bm.right;
  230.             h += bm.top + bm.bottom;
  231.          }
  232.          if(label && label.length != 0)
  233.          {
  234.             w += mx_internal::extraSpacing;
  235.          }
  236.          else
  237.          {
  238.             w += 6;
  239.          }
  240.          if(mx_internal::currentSkin && (isNaN(skinMeasuredWidth) || isNaN(skinMeasuredHeight)))
  241.          {
  242.             skinMeasuredWidth = mx_internal::currentSkin.measuredWidth;
  243.             skinMeasuredHeight = mx_internal::currentSkin.measuredHeight;
  244.          }
  245.          if(!isNaN(skinMeasuredWidth))
  246.          {
  247.             w = Math.max(skinMeasuredWidth,w);
  248.          }
  249.          if(!isNaN(skinMeasuredHeight))
  250.          {
  251.             h = Math.max(skinMeasuredHeight,h);
  252.          }
  253.          measuredMinWidth = measuredWidth = w;
  254.          measuredMinHeight = measuredHeight = h;
  255.       }
  256.       
  257.       [Bindable("labelChanged")]
  258.       public function get label() : String
  259.       {
  260.          return _label;
  261.       }
  262.       
  263.       mx_internal function getCurrentIconName() : String
  264.       {
  265.          var _loc1_:String = null;
  266.          if(!enabled)
  267.          {
  268.             _loc1_ = !!selected ? mx_internal::selectedDisabledIconName : mx_internal::disabledIconName;
  269.          }
  270.          else if(mx_internal::phase == ButtonPhase.UP)
  271.          {
  272.             _loc1_ = !!selected ? mx_internal::selectedUpIconName : mx_internal::upIconName;
  273.          }
  274.          else if(mx_internal::phase == ButtonPhase.OVER)
  275.          {
  276.             _loc1_ = !!selected ? mx_internal::selectedOverIconName : mx_internal::overIconName;
  277.          }
  278.          else if(mx_internal::phase == ButtonPhase.DOWN)
  279.          {
  280.             _loc1_ = !!selected ? mx_internal::selectedDownIconName : mx_internal::downIconName;
  281.          }
  282.          return _loc1_;
  283.       }
  284.       
  285.       protected function mouseUpHandler(param1:MouseEvent) : void
  286.       {
  287.          if(!enabled)
  288.          {
  289.             return;
  290.          }
  291.          phase = ButtonPhase.OVER;
  292.          buttonReleased();
  293.          if(!toggle)
  294.          {
  295.             param1.updateAfterEvent();
  296.          }
  297.       }
  298.       
  299.       override protected function adjustFocusRect(param1:DisplayObject = null) : void
  300.       {
  301.          super.adjustFocusRect(!mx_internal::currentSkin ? DisplayObject(mx_internal::currentIcon) : this);
  302.       }
  303.       
  304.       mx_internal function set phase(param1:String) : void
  305.       {
  306.          _phase = param1;
  307.          invalidateSize();
  308.          invalidateDisplayList();
  309.       }
  310.       
  311.       mx_internal function viewIconForPhase(param1:String) : IFlexDisplayObject
  312.       {
  313.          var _loc3_:IFlexDisplayObject = null;
  314.          var _loc4_:Boolean = false;
  315.          var _loc5_:String = null;
  316.          var _loc2_:Class = Class(getStyle(param1));
  317.          if(!_loc2_)
  318.          {
  319.             _loc2_ = Class(getStyle(mx_internal::iconName));
  320.             if(mx_internal::defaultIconUsesStates)
  321.             {
  322.                param1 = mx_internal::iconName;
  323.             }
  324.             if(!mx_internal::checkedDefaultIcon && _loc2_)
  325.             {
  326.                _loc3_ = IFlexDisplayObject(new _loc2_());
  327.                if(!(_loc3_ is IProgrammaticSkin) && _loc3_ is IStateClient)
  328.                {
  329.                   defaultIconUsesStates = true;
  330.                   param1 = mx_internal::iconName;
  331.                }
  332.                if(_loc3_)
  333.                {
  334.                   checkedDefaultIcon = true;
  335.                }
  336.             }
  337.          }
  338.          _loc3_ = IFlexDisplayObject(getChildByName(param1));
  339.          if(_loc3_ == null)
  340.          {
  341.             if(_loc2_ != null)
  342.             {
  343.                _loc3_ = IFlexDisplayObject(new _loc2_());
  344.                _loc3_.name = param1;
  345.                if(_loc3_ is ISimpleStyleClient)
  346.                {
  347.                   ISimpleStyleClient(_loc3_).styleName = this;
  348.                }
  349.                addChild(DisplayObject(_loc3_));
  350.                _loc4_ = false;
  351.                if(_loc3_ is IInvalidating)
  352.                {
  353.                   IInvalidating(_loc3_).validateNow();
  354.                   _loc4_ = true;
  355.                }
  356.                else if(_loc3_ is IProgrammaticSkin)
  357.                {
  358.                   IProgrammaticSkin(_loc3_).validateDisplayList();
  359.                   _loc4_ = true;
  360.                }
  361.                if(_loc3_ && _loc3_ is IUIComponent)
  362.                {
  363.                   IUIComponent(_loc3_).enabled = enabled;
  364.                }
  365.                if(_loc4_)
  366.                {
  367.                   _loc3_.setActualSize(_loc3_.measuredWidth,_loc3_.measuredHeight);
  368.                }
  369.                icons.push(_loc3_);
  370.             }
  371.          }
  372.          if(mx_internal::currentIcon != null)
  373.          {
  374.             mx_internal::currentIcon.visible = false;
  375.          }
  376.          currentIcon = _loc3_;
  377.          if(mx_internal::defaultIconUsesStates && mx_internal::currentIcon is IStateClient)
  378.          {
  379.             _loc5_ = "";
  380.             if(!enabled)
  381.             {
  382.                _loc5_ = !!selected ? "selectedDisabled" : "disabled";
  383.             }
  384.             else if(mx_internal::phase == ButtonPhase.UP)
  385.             {
  386.                _loc5_ = !!selected ? "selectedUp" : "up";
  387.             }
  388.             else if(mx_internal::phase == ButtonPhase.OVER)
  389.             {
  390.                _loc5_ = !!selected ? "selectedOver" : "over";
  391.             }
  392.             else if(mx_internal::phase == ButtonPhase.DOWN)
  393.             {
  394.                _loc5_ = !!selected ? "selectedDown" : "down";
  395.             }
  396.             IStateClient(mx_internal::currentIcon).currentState = _loc5_;
  397.          }
  398.          if(mx_internal::currentIcon != null)
  399.          {
  400.             mx_internal::currentIcon.visible = true;
  401.          }
  402.          return _loc3_;
  403.       }
  404.       
  405.       mx_internal function viewSkinForPhase(param1:String, param2:String) : void
  406.       {
  407.          var _loc4_:IFlexDisplayObject = null;
  408.          var _loc5_:Number = NaN;
  409.          var _loc6_:ISimpleStyleClient = null;
  410.          var _loc3_:Class = Class(getStyle(param1));
  411.          if(!_loc3_)
  412.          {
  413.             _loc3_ = Class(getStyle(mx_internal::skinName));
  414.             if(mx_internal::defaultSkinUsesStates)
  415.             {
  416.                param1 = mx_internal::skinName;
  417.             }
  418.             if(!mx_internal::checkedDefaultSkin && _loc3_)
  419.             {
  420.                if(!((_loc4_ = IFlexDisplayObject(new _loc3_())) is IProgrammaticSkin) && _loc4_ is IStateClient)
  421.                {
  422.                   defaultSkinUsesStates = true;
  423.                   param1 = mx_internal::skinName;
  424.                }
  425.                if(_loc4_)
  426.                {
  427.                   checkedDefaultSkin = true;
  428.                }
  429.             }
  430.          }
  431.          if(!(_loc4_ = IFlexDisplayObject(getChildByName(param1))))
  432.          {
  433.             if(_loc3_)
  434.             {
  435.                (_loc4_ = IFlexDisplayObject(new _loc3_())).name = param1;
  436.                if(_loc6_ = _loc4_ as ISimpleStyleClient)
  437.                {
  438.                   _loc6_.styleName = this;
  439.                }
  440.                addChild(DisplayObject(_loc4_));
  441.                _loc4_.setActualSize(unscaledWidth,unscaledHeight);
  442.                if(_loc4_ is IInvalidating && initialized)
  443.                {
  444.                   IInvalidating(_loc4_).validateNow();
  445.                }
  446.                else if(_loc4_ is IProgrammaticSkin && initialized)
  447.                {
  448.                   IProgrammaticSkin(_loc4_).validateDisplayList();
  449.                }
  450.                skins.push(_loc4_);
  451.             }
  452.          }
  453.          if(mx_internal::currentSkin)
  454.          {
  455.             mx_internal::currentSkin.visible = false;
  456.          }
  457.          currentSkin = _loc4_;
  458.          if(mx_internal::defaultSkinUsesStates && mx_internal::currentSkin is IStateClient)
  459.          {
  460.             IStateClient(mx_internal::currentSkin).currentState = param2;
  461.          }
  462.          if(mx_internal::currentSkin)
  463.          {
  464.             mx_internal::currentSkin.visible = true;
  465.          }
  466.          if(enabled)
  467.          {
  468.             if(mx_internal::phase == ButtonPhase.OVER)
  469.             {
  470.                _loc5_ = textField.getStyle("textRollOverColor");
  471.             }
  472.             else if(mx_internal::phase == ButtonPhase.DOWN)
  473.             {
  474.                _loc5_ = textField.getStyle("textSelectedColor");
  475.             }
  476.             else
  477.             {
  478.                _loc5_ = textField.getStyle("color");
  479.             }
  480.             textField.setColor(_loc5_);
  481.          }
  482.       }
  483.       
  484.       mx_internal function getTextField() : IUITextField
  485.       {
  486.          return textField;
  487.       }
  488.       
  489.       protected function rollOverHandler(param1:MouseEvent) : void
  490.       {
  491.          if(mx_internal::phase == ButtonPhase.UP)
  492.          {
  493.             if(param1.buttonDown)
  494.             {
  495.                return;
  496.             }
  497.             phase = ButtonPhase.OVER;
  498.             param1.updateAfterEvent();
  499.          }
  500.          else if(mx_internal::phase == ButtonPhase.OVER)
  501.          {
  502.             phase = ButtonPhase.DOWN;
  503.             param1.updateAfterEvent();
  504.             if(autoRepeatTimer)
  505.             {
  506.                autoRepeatTimer.start();
  507.             }
  508.          }
  509.       }
  510.       
  511.       override protected function createChildren() : void
  512.       {
  513.          super.createChildren();
  514.          if(!textField)
  515.          {
  516.             textField = IUITextField(createInFontContext(UITextField));
  517.             textField.styleName = this;
  518.             addChild(DisplayObject(textField));
  519.          }
  520.       }
  521.       
  522.       mx_internal function setSelected(param1:Boolean, param2:Boolean = false) : void
  523.       {
  524.          if(mx_internal::_selected != param1)
  525.          {
  526.             _selected = param1;
  527.             invalidateDisplayList();
  528.             if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  529.             {
  530.                if(toggle)
  531.                {
  532.                   dispatchEvent(new Event(Event.CHANGE));
  533.                }
  534.             }
  535.             else if(toggle && !param2)
  536.             {
  537.                dispatchEvent(new Event(Event.CHANGE));
  538.             }
  539.             dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
  540.          }
  541.       }
  542.       
  543.       private function autoRepeatTimer_timerDelayHandler(param1:Event) : void
  544.       {
  545.          if(!enabled)
  546.          {
  547.             return;
  548.          }
  549.          dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
  550.          if(autoRepeat)
  551.          {
  552.             autoRepeatTimer.reset();
  553.             autoRepeatTimer.removeEventListener(TimerEvent.TIMER,autoRepeatTimer_timerDelayHandler);
  554.             autoRepeatTimer.delay = getStyle("repeatInterval");
  555.             autoRepeatTimer.addEventListener(TimerEvent.TIMER,autoRepeatTimer_timerHandler);
  556.             autoRepeatTimer.start();
  557.          }
  558.       }
  559.       
  560.       public function get autoRepeat() : Boolean
  561.       {
  562.          return _autoRepeat;
  563.       }
  564.       
  565.       public function set selected(param1:Boolean) : void
  566.       {
  567.          selectedSet = true;
  568.          setSelected(param1,true);
  569.       }
  570.       
  571.       override protected function focusOutHandler(param1:FocusEvent) : void
  572.       {
  573.          super.focusOutHandler(param1);
  574.          if(mx_internal::phase != ButtonPhase.UP)
  575.          {
  576.             phase = ButtonPhase.UP;
  577.          }
  578.       }
  579.       
  580.       [Bindable("labelPlacementChanged")]
  581.       public function get labelPlacement() : String
  582.       {
  583.          return mx_internal::_labelPlacement;
  584.       }
  585.       
  586.       public function set autoRepeat(param1:Boolean) : void
  587.       {
  588.          _autoRepeat = param1;
  589.          if(param1)
  590.          {
  591.             autoRepeatTimer = new Timer(1);
  592.          }
  593.          else
  594.          {
  595.             autoRepeatTimer = null;
  596.          }
  597.       }
  598.       
  599.       mx_internal function changeIcons() : void
  600.       {
  601.          var _loc1_:int = icons.length;
  602.          var _loc2_:int = 0;
  603.          while(_loc2_ < _loc1_)
  604.          {
  605.             removeChild(icons[_loc2_]);
  606.             _loc2_++;
  607.          }
  608.          icons = [];
  609.          checkedDefaultIcon = false;
  610.          defaultIconUsesStates = false;
  611.       }
  612.       
  613.       public function set data(param1:Object) : void
  614.       {
  615.          var _loc2_:* = undefined;
  616.          var _loc3_:* = undefined;
  617.          _data = param1;
  618.          if(_listData && _listData is DataGridListData && DataGridListData(_listData).dataField != null)
  619.          {
  620.             _loc2_ = _data[DataGridListData(_listData).dataField];
  621.             _loc3_ = "";
  622.          }
  623.          else if(_listData)
  624.          {
  625.             if(selectedField)
  626.             {
  627.                _loc2_ = _data[selectedField];
  628.             }
  629.             _loc3_ = _listData.label;
  630.          }
  631.          else
  632.          {
  633.             _loc2_ = _data;
  634.          }
  635.          if(_loc2_ !== undefined && !selectedSet)
  636.          {
  637.             selected = _loc2_ as Boolean;
  638.             selectedSet = false;
  639.          }
  640.          if(_loc3_ !== undefined && !labelSet)
  641.          {
  642.             label = _loc3_;
  643.             labelSet = false;
  644.          }
  645.          dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
  646.       }
  647.       
  648.       mx_internal function getCurrentIcon() : IFlexDisplayObject
  649.       {
  650.          var _loc1_:String = getCurrentIconName();
  651.          if(!_loc1_)
  652.          {
  653.             return null;
  654.          }
  655.          return viewIconForPhase(_loc1_);
  656.       }
  657.       
  658.       public function get fontContext() : IFlexModuleFactory
  659.       {
  660.          return moduleFactory;
  661.       }
  662.       
  663.       public function get emphasized() : Boolean
  664.       {
  665.          return mx_internal::_emphasized;
  666.       }
  667.       
  668.       [Bindable("dataChange")]
  669.       public function get listData() : BaseListData
  670.       {
  671.          return _listData;
  672.       }
  673.       
  674.       mx_internal function layoutContents(param1:Number, param2:Number, param3:Boolean) : void
  675.       {
  676.          var _loc20_:TextLineMetrics = null;
  677.          var _loc28_:MoveEvent = null;
  678.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  679.          {
  680.             previousVersion_layoutContents(param1,param2,param3);
  681.             return;
  682.          }
  683.          var _loc4_:Number = 0;
  684.          var _loc5_:Number = 0;
  685.          var _loc6_:Number = 0;
  686.          var _loc7_:Number = 0;
  687.          var _loc8_:Number = 0;
  688.          var _loc9_:Number = 0;
  689.          var _loc10_:Number = 0;
  690.          var _loc11_:Number = 0;
  691.          var _loc12_:Number = 0;
  692.          var _loc13_:Number = 0;
  693.          var _loc14_:Number = getStyle("paddingLeft");
  694.          var _loc15_:Number = getStyle("paddingRight");
  695.          var _loc16_:Number = getStyle("paddingTop");
  696.          var _loc17_:Number = getStyle("paddingBottom");
  697.          var _loc18_:Number = 0;
  698.          var _loc19_:Number = 0;
  699.          if(label)
  700.          {
  701.             _loc18_ = (_loc20_ = measureText(label)).width + mx_internal::TEXT_WIDTH_PADDING;
  702.             _loc19_ = _loc20_.height + UITextField.TEXT_HEIGHT_PADDING;
  703.          }
  704.          else
  705.          {
  706.             _loc19_ = (_loc20_ = measureText("Wj")).height + UITextField.TEXT_HEIGHT_PADDING;
  707.          }
  708.          var _loc21_:Number = !!param3 ? Number(mx_internal::buttonOffset) : Number(0);
  709.          var _loc22_:String = getStyle("textAlign");
  710.          var _loc23_:Number = param1;
  711.          var _loc24_:Number = param2;
  712.          var _loc25_:EdgeMetrics;
  713.          if(_loc25_ = mx_internal::currentSkin && mx_internal::currentSkin is IBorder && !(mx_internal::currentSkin is IFlexAsset) ? IBorder(mx_internal::currentSkin).borderMetrics : null)
  714.          {
  715.             _loc23_ -= _loc25_.left + _loc25_.right;
  716.             _loc24_ -= _loc25_.top + _loc25_.bottom;
  717.          }
  718.          if(mx_internal::currentIcon)
  719.          {
  720.             _loc8_ = mx_internal::currentIcon.width;
  721.             _loc9_ = mx_internal::currentIcon.height;
  722.          }
  723.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  724.          {
  725.             _loc12_ = getStyle("horizontalGap");
  726.             if(_loc8_ == 0 || _loc18_ == 0)
  727.             {
  728.                _loc12_ = 0;
  729.             }
  730.             if(_loc18_ > 0)
  731.             {
  732.                textField.width = _loc4_ = Math.max(Math.min(_loc23_ - _loc8_ - _loc12_ - _loc14_ - _loc15_,_loc18_),0);
  733.             }
  734.             else
  735.             {
  736.                textField.width = _loc4_ = 0;
  737.             }
  738.             textField.height = _loc5_ = Math.min(_loc24_,_loc19_);
  739.             if(_loc22_ == "left")
  740.             {
  741.                _loc6_ += _loc14_;
  742.             }
  743.             else if(_loc22_ == "right")
  744.             {
  745.                _loc6_ += _loc23_ - _loc4_ - _loc8_ - _loc12_ - _loc15_;
  746.             }
  747.             else
  748.             {
  749.                _loc6_ += (_loc23_ - _loc4_ - _loc8_ - _loc12_ - _loc14_ - _loc15_) / 2 + _loc14_;
  750.             }
  751.             if(labelPlacement == ButtonLabelPlacement.RIGHT)
  752.             {
  753.                _loc10_ = (_loc6_ += _loc8_ + _loc12_) - (_loc8_ + _loc12_);
  754.             }
  755.             else
  756.             {
  757.                _loc10_ = _loc6_ + _loc4_ + _loc12_;
  758.             }
  759.             _loc11_ = (_loc24_ - _loc9_ - _loc16_ - _loc17_) / 2 + _loc16_;
  760.             _loc7_ = (_loc24_ - _loc5_ - _loc16_ - _loc17_) / 2 + _loc16_;
  761.          }
  762.          else
  763.          {
  764.             _loc13_ = getStyle("verticalGap");
  765.             if(_loc9_ == 0 || label == "")
  766.             {
  767.                _loc13_ = 0;
  768.             }
  769.             if(_loc18_ > 0)
  770.             {
  771.                textField.width = _loc4_ = Math.max(_loc23_ - _loc14_ - _loc15_,0);
  772.                textField.height = _loc5_ = Math.min(_loc24_ - _loc9_ - _loc16_ - _loc17_ - _loc13_,_loc19_);
  773.             }
  774.             else
  775.             {
  776.                textField.width = _loc4_ = 0;
  777.                textField.height = _loc5_ = 0;
  778.             }
  779.             _loc6_ = _loc14_;
  780.             if(_loc22_ == "left")
  781.             {
  782.                _loc10_ += _loc14_;
  783.             }
  784.             else if(_loc22_ == "right")
  785.             {
  786.                _loc10_ += Math.max(_loc23_ - _loc8_ - _loc15_,_loc14_);
  787.             }
  788.             else
  789.             {
  790.                _loc10_ += (_loc23_ - _loc8_ - _loc14_ - _loc15_) / 2 + _loc14_;
  791.             }
  792.             if(labelPlacement == ButtonLabelPlacement.TOP)
  793.             {
  794.                _loc7_ += (_loc24_ - _loc5_ - _loc9_ - _loc16_ - _loc17_ - _loc13_) / 2 + _loc16_;
  795.                _loc11_ += _loc7_ + _loc5_ + _loc13_;
  796.             }
  797.             else
  798.             {
  799.                _loc11_ += (_loc24_ - _loc5_ - _loc9_ - _loc16_ - _loc17_ - _loc13_) / 2 + _loc16_;
  800.                _loc7_ += _loc11_ + _loc9_ + _loc13_;
  801.             }
  802.          }
  803.          var _loc26_:Number = _loc21_;
  804.          var _loc27_:Number = _loc21_;
  805.          if(_loc25_)
  806.          {
  807.             _loc26_ += _loc25_.left;
  808.             _loc27_ += _loc25_.top;
  809.          }
  810.          textField.x = Math.round(_loc6_ + _loc26_);
  811.          textField.y = Math.round(_loc7_ + _loc27_);
  812.          if(mx_internal::currentIcon)
  813.          {
  814.             _loc10_ += _loc26_;
  815.             _loc11_ += _loc27_;
  816.             (_loc28_ = new MoveEvent(MoveEvent.MOVE)).oldX = mx_internal::currentIcon.x;
  817.             _loc28_.oldY = mx_internal::currentIcon.y;
  818.             mx_internal::currentIcon.x = Math.round(_loc10_);
  819.             mx_internal::currentIcon.y = Math.round(_loc11_);
  820.             mx_internal::currentIcon.dispatchEvent(_loc28_);
  821.          }
  822.          if(mx_internal::currentSkin)
  823.          {
  824.             setChildIndex(DisplayObject(mx_internal::currentSkin),numChildren - 1);
  825.          }
  826.          if(mx_internal::currentIcon)
  827.          {
  828.             setChildIndex(DisplayObject(mx_internal::currentIcon),numChildren - 1);
  829.          }
  830.          if(textField)
  831.          {
  832.             setChildIndex(DisplayObject(textField),numChildren - 1);
  833.          }
  834.       }
  835.       
  836.       protected function mouseDownHandler(param1:MouseEvent) : void
  837.       {
  838.          if(!enabled)
  839.          {
  840.             return;
  841.          }
  842.          systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP,systemManager_mouseUpHandler,true);
  843.          systemManager.getSandboxRoot().addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE,stage_mouseLeaveHandler);
  844.          buttonPressed();
  845.          param1.updateAfterEvent();
  846.       }
  847.       
  848.       override protected function keyDownHandler(param1:KeyboardEvent) : void
  849.       {
  850.          if(!enabled)
  851.          {
  852.             return;
  853.          }
  854.          if(param1.keyCode == Keyboard.SPACE)
  855.          {
  856.             buttonPressed();
  857.          }
  858.       }
  859.       
  860.       protected function rollOutHandler(param1:MouseEvent) : void
  861.       {
  862.          if(mx_internal::phase == ButtonPhase.OVER)
  863.          {
  864.             phase = ButtonPhase.UP;
  865.             param1.updateAfterEvent();
  866.          }
  867.          else if(mx_internal::phase == ButtonPhase.DOWN && !stickyHighlighting)
  868.          {
  869.             phase = ButtonPhase.OVER;
  870.             param1.updateAfterEvent();
  871.             if(autoRepeatTimer)
  872.             {
  873.                autoRepeatTimer.stop();
  874.             }
  875.          }
  876.       }
  877.       
  878.       mx_internal function get phase() : String
  879.       {
  880.          return _phase;
  881.       }
  882.       
  883.       override public function set enabled(param1:Boolean) : void
  884.       {
  885.          if(super.enabled == param1)
  886.          {
  887.             return;
  888.          }
  889.          super.enabled = param1;
  890.          enabledChanged = true;
  891.          invalidateProperties();
  892.          invalidateDisplayList();
  893.       }
  894.       
  895.       override protected function measure() : void
  896.       {
  897.          var _loc9_:TextLineMetrics = null;
  898.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  899.          {
  900.             previousVersion_measure();
  901.             return;
  902.          }
  903.          super.measure();
  904.          var _loc1_:Number = 0;
  905.          var _loc2_:Number = 0;
  906.          if(label)
  907.          {
  908.             _loc1_ = (_loc9_ = measureText(label)).width + mx_internal::TEXT_WIDTH_PADDING;
  909.             _loc2_ = _loc9_.height + UITextField.TEXT_HEIGHT_PADDING;
  910.          }
  911.          var _loc3_:IFlexDisplayObject = getCurrentIcon();
  912.          var _loc4_:Number = !!_loc3_ ? Number(_loc3_.width) : Number(0);
  913.          var _loc5_:Number = !!_loc3_ ? Number(_loc3_.height) : Number(0);
  914.          var _loc6_:Number = 0;
  915.          var _loc7_:Number = 0;
  916.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  917.          {
  918.             _loc6_ = _loc1_ + _loc4_;
  919.             if(_loc1_ && _loc4_)
  920.             {
  921.                _loc6_ += getStyle("horizontalGap");
  922.             }
  923.             _loc7_ = Math.max(_loc2_,_loc5_);
  924.          }
  925.          else
  926.          {
  927.             _loc6_ = Math.max(_loc1_,_loc4_);
  928.             _loc7_ = _loc2_ + _loc5_;
  929.             if(_loc2_ && _loc5_)
  930.             {
  931.                _loc7_ += getStyle("verticalGap");
  932.             }
  933.          }
  934.          if(_loc1_ || _loc4_)
  935.          {
  936.             _loc6_ += getStyle("paddingLeft") + getStyle("paddingRight");
  937.             _loc7_ += getStyle("paddingTop") + getStyle("paddingBottom");
  938.          }
  939.          var _loc8_:EdgeMetrics;
  940.          if(_loc8_ = mx_internal::currentSkin && mx_internal::currentSkin is IBorder && !(mx_internal::currentSkin is IFlexAsset) ? IBorder(mx_internal::currentSkin).borderMetrics : null)
  941.          {
  942.             _loc6_ += _loc8_.left + _loc8_.right;
  943.             _loc7_ += _loc8_.top + _loc8_.bottom;
  944.          }
  945.          if(mx_internal::currentSkin && (isNaN(skinMeasuredWidth) || isNaN(skinMeasuredHeight)))
  946.          {
  947.             skinMeasuredWidth = mx_internal::currentSkin.measuredWidth;
  948.             skinMeasuredHeight = mx_internal::currentSkin.measuredHeight;
  949.          }
  950.          if(!isNaN(skinMeasuredWidth))
  951.          {
  952.             _loc6_ = Math.max(skinMeasuredWidth,_loc6_);
  953.          }
  954.          if(!isNaN(skinMeasuredHeight))
  955.          {
  956.             _loc7_ = Math.max(skinMeasuredHeight,_loc7_);
  957.          }
  958.          measuredMinWidth = measuredWidth = _loc6_;
  959.          measuredMinHeight = measuredHeight = _loc7_;
  960.       }
  961.       
  962.       [Bindable("toggleChanged")]
  963.       public function get toggle() : Boolean
  964.       {
  965.          return mx_internal::_toggle;
  966.       }
  967.       
  968.       mx_internal function buttonReleased() : void
  969.       {
  970.          systemManager.getSandboxRoot().removeEventListener(MouseEvent.MOUSE_UP,systemManager_mouseUpHandler,true);
  971.          systemManager.getSandboxRoot().removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE,stage_mouseLeaveHandler);
  972.          if(autoRepeatTimer)
  973.          {
  974.             autoRepeatTimer.removeEventListener(TimerEvent.TIMER,autoRepeatTimer_timerDelayHandler);
  975.             autoRepeatTimer.removeEventListener(TimerEvent.TIMER,autoRepeatTimer_timerHandler);
  976.             autoRepeatTimer.reset();
  977.          }
  978.       }
  979.       
  980.       mx_internal function buttonPressed() : void
  981.       {
  982.          phase = ButtonPhase.DOWN;
  983.          dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
  984.          if(autoRepeat)
  985.          {
  986.             autoRepeatTimer.delay = getStyle("repeatDelay");
  987.             autoRepeatTimer.addEventListener(TimerEvent.TIMER,autoRepeatTimer_timerDelayHandler);
  988.             autoRepeatTimer.start();
  989.          }
  990.       }
  991.       
  992.       override protected function keyUpHandler(param1:KeyboardEvent) : void
  993.       {
  994.          if(!enabled)
  995.          {
  996.             return;
  997.          }
  998.          if(param1.keyCode == Keyboard.SPACE)
  999.          {
  1000.             buttonReleased();
  1001.             if(mx_internal::phase == ButtonPhase.DOWN)
  1002.             {
  1003.                dispatchEvent(new MouseEvent(MouseEvent.CLICK));
  1004.             }
  1005.             phase = ButtonPhase.UP;
  1006.          }
  1007.       }
  1008.       
  1009.       [Bindable("valueCommit")]
  1010.       [Bindable("click")]
  1011.       public function get selected() : Boolean
  1012.       {
  1013.          return mx_internal::_selected;
  1014.       }
  1015.       
  1016.       public function set labelPlacement(param1:String) : void
  1017.       {
  1018.          _labelPlacement = param1;
  1019.          invalidateSize();
  1020.          invalidateDisplayList();
  1021.          dispatchEvent(new Event("labelPlacementChanged"));
  1022.       }
  1023.       
  1024.       protected function clickHandler(param1:MouseEvent) : void
  1025.       {
  1026.          if(!enabled)
  1027.          {
  1028.             param1.stopImmediatePropagation();
  1029.             return;
  1030.          }
  1031.          if(toggle)
  1032.          {
  1033.             setSelected(!selected);
  1034.             param1.updateAfterEvent();
  1035.          }
  1036.       }
  1037.       
  1038.       override protected function initializeAccessibility() : void
  1039.       {
  1040.          if(Button.createAccessibilityImplementation != null)
  1041.          {
  1042.             Button.createAccessibilityImplementation(this);
  1043.          }
  1044.       }
  1045.       
  1046.       public function set toggle(param1:Boolean) : void
  1047.       {
  1048.          _toggle = param1;
  1049.          toggleChanged = true;
  1050.          invalidateProperties();
  1051.          invalidateDisplayList();
  1052.          dispatchEvent(new Event("toggleChanged"));
  1053.       }
  1054.       
  1055.       override public function get baselinePosition() : Number
  1056.       {
  1057.          var _loc1_:String = null;
  1058.          var _loc2_:TextLineMetrics = null;
  1059.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  1060.          {
  1061.             _loc1_ = label;
  1062.             if(!_loc1_)
  1063.             {
  1064.                _loc1_ = "Wj";
  1065.             }
  1066.             validateNow();
  1067.             if(!label && (labelPlacement == ButtonLabelPlacement.TOP || labelPlacement == ButtonLabelPlacement.BOTTOM))
  1068.             {
  1069.                _loc2_ = measureText(_loc1_);
  1070.                return (measuredHeight - _loc2_.height) / 2 + _loc2_.ascent;
  1071.             }
  1072.             return textField.y + measureText(_loc1_).ascent;
  1073.          }
  1074.          if(!validateBaselinePosition())
  1075.          {
  1076.             return NaN;
  1077.          }
  1078.          return textField.y + textField.baselinePosition;
  1079.       }
  1080.       
  1081.       [Bindable("dataChange")]
  1082.       public function get data() : Object
  1083.       {
  1084.          return _data;
  1085.       }
  1086.       
  1087.       public function set fontContext(param1:IFlexModuleFactory) : void
  1088.       {
  1089.          this.moduleFactory = param1;
  1090.       }
  1091.       
  1092.       mx_internal function viewSkin() : void
  1093.       {
  1094.          var _loc1_:String = null;
  1095.          var _loc2_:String = null;
  1096.          if(!enabled)
  1097.          {
  1098.             _loc1_ = !!selected ? mx_internal::selectedDisabledSkinName : mx_internal::disabledSkinName;
  1099.             _loc2_ = !!selected ? "selectedDisabled" : "disabled";
  1100.          }
  1101.          else if(mx_internal::phase == ButtonPhase.UP)
  1102.          {
  1103.             _loc1_ = !!selected ? mx_internal::selectedUpSkinName : mx_internal::upSkinName;
  1104.             _loc2_ = !!selected ? "selectedUp" : "up";
  1105.          }
  1106.          else if(mx_internal::phase == ButtonPhase.OVER)
  1107.          {
  1108.             _loc1_ = !!selected ? mx_internal::selectedOverSkinName : mx_internal::overSkinName;
  1109.             _loc2_ = !!selected ? "selectedOver" : "over";
  1110.          }
  1111.          else if(mx_internal::phase == ButtonPhase.DOWN)
  1112.          {
  1113.             _loc1_ = !!selected ? mx_internal::selectedDownSkinName : mx_internal::downSkinName;
  1114.             _loc2_ = !!selected ? "selectedDown" : "down";
  1115.          }
  1116.          viewSkinForPhase(_loc1_,_loc2_);
  1117.       }
  1118.       
  1119.       override public function styleChanged(param1:String) : void
  1120.       {
  1121.          styleChangedFlag = true;
  1122.          super.styleChanged(param1);
  1123.          if(!param1 || param1 == "styleName")
  1124.          {
  1125.             changeSkins();
  1126.             changeIcons();
  1127.             if(initialized)
  1128.             {
  1129.                viewSkin();
  1130.                viewIcon();
  1131.             }
  1132.          }
  1133.          else if(param1.toLowerCase().indexOf("skin") != -1)
  1134.          {
  1135.             changeSkins();
  1136.          }
  1137.          else if(param1.toLowerCase().indexOf("icon") != -1)
  1138.          {
  1139.             changeIcons();
  1140.             invalidateSize();
  1141.          }
  1142.       }
  1143.       
  1144.       public function set emphasized(param1:Boolean) : void
  1145.       {
  1146.          _emphasized = param1;
  1147.          emphasizedChanged = true;
  1148.          invalidateDisplayList();
  1149.       }
  1150.       
  1151.       mx_internal function viewIcon() : void
  1152.       {
  1153.          var _loc1_:String = getCurrentIconName();
  1154.          viewIconForPhase(_loc1_);
  1155.       }
  1156.       
  1157.       override public function set toolTip(param1:String) : void
  1158.       {
  1159.          super.toolTip = param1;
  1160.          if(param1)
  1161.          {
  1162.             toolTipSet = true;
  1163.          }
  1164.          else
  1165.          {
  1166.             toolTipSet = false;
  1167.             invalidateDisplayList();
  1168.          }
  1169.       }
  1170.       
  1171.       override protected function commitProperties() : void
  1172.       {
  1173.          super.commitProperties();
  1174.          if(hasFontContextChanged() && textField != null)
  1175.          {
  1176.             removeChild(DisplayObject(textField));
  1177.             textField = null;
  1178.          }
  1179.          if(!textField)
  1180.          {
  1181.             textField = IUITextField(createInFontContext(UITextField));
  1182.             textField.styleName = this;
  1183.             addChild(DisplayObject(textField));
  1184.             enabledChanged = true;
  1185.             toggleChanged = true;
  1186.          }
  1187.          if(!initialized)
  1188.          {
  1189.             viewSkin();
  1190.             viewIcon();
  1191.          }
  1192.          if(enabledChanged)
  1193.          {
  1194.             textField.enabled = enabled;
  1195.             if(mx_internal::currentIcon && mx_internal::currentIcon is IUIComponent)
  1196.             {
  1197.                IUIComponent(mx_internal::currentIcon).enabled = enabled;
  1198.             }
  1199.             enabledChanged = false;
  1200.          }
  1201.          if(mx_internal::toggleChanged)
  1202.          {
  1203.             if(!toggle)
  1204.             {
  1205.                selected = false;
  1206.             }
  1207.             toggleChanged = false;
  1208.          }
  1209.       }
  1210.       
  1211.       mx_internal function changeSkins() : void
  1212.       {
  1213.          var _loc1_:int = skins.length;
  1214.          var _loc2_:int = 0;
  1215.          while(_loc2_ < _loc1_)
  1216.          {
  1217.             removeChild(skins[_loc2_]);
  1218.             _loc2_++;
  1219.          }
  1220.          skins = [];
  1221.          skinMeasuredWidth = NaN;
  1222.          skinMeasuredHeight = NaN;
  1223.          checkedDefaultSkin = false;
  1224.          defaultSkinUsesStates = false;
  1225.          if(initialized && FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0)
  1226.          {
  1227.             viewSkin();
  1228.             invalidateSize();
  1229.          }
  1230.       }
  1231.       
  1232.       private function autoRepeatTimer_timerHandler(param1:Event) : void
  1233.       {
  1234.          if(!enabled)
  1235.          {
  1236.             return;
  1237.          }
  1238.          dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
  1239.       }
  1240.       
  1241.       private function previousVersion_layoutContents(param1:Number, param2:Number, param3:Boolean) : void
  1242.       {
  1243.          var _loc20_:TextLineMetrics = null;
  1244.          var _loc28_:Number = NaN;
  1245.          var _loc29_:MoveEvent = null;
  1246.          var _loc4_:Number = 0;
  1247.          var _loc5_:Number = 0;
  1248.          var _loc6_:Number = 0;
  1249.          var _loc7_:Number = 0;
  1250.          var _loc8_:Number = 0;
  1251.          var _loc9_:Number = 0;
  1252.          var _loc10_:Number = 0;
  1253.          var _loc11_:Number = 0;
  1254.          var _loc12_:Number = 2;
  1255.          var _loc13_:Number = 2;
  1256.          var _loc14_:Number = getStyle("paddingLeft");
  1257.          var _loc15_:Number = getStyle("paddingRight");
  1258.          var _loc16_:Number = getStyle("paddingTop");
  1259.          var _loc17_:Number = getStyle("paddingBottom");
  1260.          var _loc18_:Number = 0;
  1261.          var _loc19_:Number = 0;
  1262.          if(label)
  1263.          {
  1264.             if((_loc20_ = measureText(label)).width > 0)
  1265.             {
  1266.                _loc18_ = _loc14_ + _loc15_ + getStyle("textIndent") + _loc20_.width;
  1267.             }
  1268.             _loc19_ = _loc20_.height;
  1269.          }
  1270.          else
  1271.          {
  1272.             _loc19_ = (_loc20_ = measureText("Wj")).height;
  1273.          }
  1274.          var _loc21_:Number = !!param3 ? Number(mx_internal::buttonOffset) : Number(0);
  1275.          var _loc22_:String = getStyle("textAlign");
  1276.          var _loc23_:EdgeMetrics = mx_internal::currentSkin && mx_internal::currentSkin is IRectangularBorder ? IRectangularBorder(mx_internal::currentSkin).borderMetrics : null;
  1277.          var _loc24_:Number = param1;
  1278.          var _loc25_:Number = param2 - _loc16_ - _loc17_;
  1279.          if(_loc23_)
  1280.          {
  1281.             _loc24_ -= _loc23_.left + _loc23_.right;
  1282.             _loc25_ -= _loc23_.top + _loc23_.bottom;
  1283.          }
  1284.          if(mx_internal::currentIcon)
  1285.          {
  1286.             _loc8_ = mx_internal::currentIcon.width;
  1287.             _loc9_ = mx_internal::currentIcon.height;
  1288.          }
  1289.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  1290.          {
  1291.             _loc12_ = getStyle("horizontalGap");
  1292.             if(_loc8_ == 0 || _loc18_ == 0)
  1293.             {
  1294.                _loc12_ = 0;
  1295.             }
  1296.             if(_loc18_ > 0)
  1297.             {
  1298.                textField.width = _loc4_ = Math.max(_loc24_ - _loc8_ - _loc12_ - _loc14_ - _loc15_,0);
  1299.             }
  1300.             else
  1301.             {
  1302.                textField.width = _loc4_ = 0;
  1303.             }
  1304.             textField.height = _loc5_ = Math.min(_loc25_ + 2,_loc19_ + UITextField.TEXT_HEIGHT_PADDING);
  1305.             if(labelPlacement == ButtonLabelPlacement.RIGHT)
  1306.             {
  1307.                _loc6_ = _loc8_ + _loc12_;
  1308.                if(mx_internal::centerContent)
  1309.                {
  1310.                   if(_loc22_ == "left")
  1311.                   {
  1312.                      _loc6_ += _loc14_;
  1313.                   }
  1314.                   else if(_loc22_ == "right")
  1315.                   {
  1316.                      _loc6_ += _loc24_ - _loc4_ - _loc8_ - _loc12_ - _loc14_;
  1317.                   }
  1318.                   else
  1319.                   {
  1320.                      _loc28_ = (_loc24_ - _loc4_ - _loc8_ - _loc12_) / 2;
  1321.                      _loc6_ += Math.max(_loc28_,_loc14_);
  1322.                   }
  1323.                }
  1324.                _loc10_ = _loc6_ - (_loc8_ + _loc12_);
  1325.                if(!mx_internal::centerContent)
  1326.                {
  1327.                   _loc6_ += _loc14_;
  1328.                }
  1329.             }
  1330.             else
  1331.             {
  1332.                _loc6_ = _loc24_ - _loc4_ - _loc8_ - _loc12_ - _loc15_;
  1333.                if(mx_internal::centerContent)
  1334.                {
  1335.                   if(_loc22_ == "left")
  1336.                   {
  1337.                      _loc6_ = 2;
  1338.                   }
  1339.                   else if(_loc22_ == "right")
  1340.                   {
  1341.                      _loc6_--;
  1342.                   }
  1343.                   else if(_loc6_ > 0)
  1344.                   {
  1345.                      _loc6_ /= 2;
  1346.                   }
  1347.                }
  1348.                _loc10_ = _loc6_ + _loc4_ + _loc12_;
  1349.             }
  1350.             _loc11_ = _loc7_ = 0;
  1351.             if(mx_internal::centerContent)
  1352.             {
  1353.                _loc11_ = Math.round((_loc25_ - _loc9_) / 2) + _loc16_;
  1354.                _loc7_ = Math.round((_loc25_ - _loc5_) / 2) + _loc16_;
  1355.             }
  1356.             else
  1357.             {
  1358.                _loc7_ += Math.max(0,(_loc25_ - _loc5_) / 2) + _loc16_;
  1359.                _loc11_ += Math.max(0,(_loc25_ - _loc9_) / 2 - 1) + _loc16_;
  1360.             }
  1361.          }
  1362.          else
  1363.          {
  1364.             _loc13_ = getStyle("verticalGap");
  1365.             if(_loc9_ == 0 || _loc19_ == 0)
  1366.             {
  1367.                _loc13_ = 0;
  1368.             }
  1369.             if(_loc18_ > 0)
  1370.             {
  1371.                textField.width = _loc4_ = Math.min(_loc24_,_loc18_ + UITextField.TEXT_WIDTH_PADDING);
  1372.                textField.height = _loc5_ = Math.min(_loc25_ - _loc9_ + 1,_loc19_ + 5);
  1373.             }
  1374.             else
  1375.             {
  1376.                textField.width = _loc4_ = 0;
  1377.                textField.height = _loc5_ = 0;
  1378.             }
  1379.             _loc6_ = (_loc24_ - _loc4_) / 2;
  1380.             _loc10_ = (_loc24_ - _loc8_) / 2;
  1381.             if(labelPlacement == ButtonLabelPlacement.TOP)
  1382.             {
  1383.                _loc7_ = _loc25_ - _loc5_ - _loc9_ - _loc13_;
  1384.                if(mx_internal::centerContent && _loc7_ > 0)
  1385.                {
  1386.                   _loc7_ /= 2;
  1387.                }
  1388.                _loc11_ = (_loc7_ += _loc16_) + _loc5_ + _loc13_ - 3;
  1389.             }
  1390.             else
  1391.             {
  1392.                _loc7_ = _loc9_ + _loc13_ + _loc16_;
  1393.                if(mx_internal::centerContent)
  1394.                {
  1395.                   _loc7_ += (_loc25_ - _loc5_ - _loc9_ - _loc13_) / 2 + 1;
  1396.                }
  1397.                _loc11_ = _loc7_ - _loc9_ - _loc13_ + 3;
  1398.             }
  1399.          }
  1400.          var _loc26_:Number = _loc21_;
  1401.          var _loc27_:Number = _loc21_;
  1402.          if(_loc23_)
  1403.          {
  1404.             _loc26_ += _loc23_.left;
  1405.             _loc27_ += _loc23_.top;
  1406.          }
  1407.          textField.x = _loc6_ + _loc26_;
  1408.          textField.y = _loc7_ + _loc27_;
  1409.          if(mx_internal::currentIcon)
  1410.          {
  1411.             _loc10_ += _loc26_;
  1412.             _loc11_ += _loc27_;
  1413.             (_loc29_ = new MoveEvent(MoveEvent.MOVE)).oldX = mx_internal::currentIcon.x;
  1414.             _loc29_.oldY = mx_internal::currentIcon.y;
  1415.             mx_internal::currentIcon.x = Math.round(_loc10_);
  1416.             mx_internal::currentIcon.y = Math.round(_loc11_);
  1417.             mx_internal::currentIcon.dispatchEvent(_loc29_);
  1418.          }
  1419.          if(mx_internal::currentSkin)
  1420.          {
  1421.             setChildIndex(DisplayObject(mx_internal::currentSkin),numChildren - 1);
  1422.          }
  1423.          if(mx_internal::currentIcon)
  1424.          {
  1425.             setChildIndex(DisplayObject(mx_internal::currentIcon),numChildren - 1);
  1426.          }
  1427.          if(textField)
  1428.          {
  1429.             setChildIndex(DisplayObject(textField),numChildren - 1);
  1430.          }
  1431.       }
  1432.       
  1433.       private function systemManager_mouseUpHandler(param1:MouseEvent) : void
  1434.       {
  1435.          if(contains(DisplayObject(param1.target)))
  1436.          {
  1437.             return;
  1438.          }
  1439.          phase = ButtonPhase.UP;
  1440.          buttonReleased();
  1441.          param1.updateAfterEvent();
  1442.       }
  1443.       
  1444.       public function set label(param1:String) : void
  1445.       {
  1446.          labelSet = true;
  1447.          if(_label != param1)
  1448.          {
  1449.             _label = param1;
  1450.             labelChanged = true;
  1451.             invalidateSize();
  1452.             invalidateDisplayList();
  1453.             dispatchEvent(new Event("labelChanged"));
  1454.          }
  1455.       }
  1456.       
  1457.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  1458.       {
  1459.          var _loc5_:IFlexDisplayObject = null;
  1460.          var _loc6_:Boolean = false;
  1461.          super.updateDisplayList(param1,param2);
  1462.          if(emphasizedChanged)
  1463.          {
  1464.             changeSkins();
  1465.             emphasizedChanged = false;
  1466.          }
  1467.          var _loc3_:int = skins.length;
  1468.          var _loc4_:int = 0;
  1469.          while(_loc4_ < _loc3_)
  1470.          {
  1471.             (_loc5_ = IFlexDisplayObject(skins[_loc4_])).setActualSize(param1,param2);
  1472.             _loc4_++;
  1473.          }
  1474.          viewSkin();
  1475.          viewIcon();
  1476.          layoutContents(param1,param2,mx_internal::phase == ButtonPhase.DOWN);
  1477.          if(oldUnscaledWidth > param1 || textField.text != label || labelChanged || styleChangedFlag)
  1478.          {
  1479.             textField.text = label;
  1480.             _loc6_ = textField.truncateToFit();
  1481.             if(!toolTipSet)
  1482.             {
  1483.                if(_loc6_)
  1484.                {
  1485.                   super.toolTip = label;
  1486.                }
  1487.                else
  1488.                {
  1489.                   super.toolTip = null;
  1490.                }
  1491.             }
  1492.             styleChangedFlag = false;
  1493.             labelChanged = false;
  1494.          }
  1495.          oldUnscaledWidth = param1;
  1496.       }
  1497.       
  1498.       private function stage_mouseLeaveHandler(param1:Event) : void
  1499.       {
  1500.          phase = ButtonPhase.UP;
  1501.          buttonReleased();
  1502.       }
  1503.       
  1504.       public function set listData(param1:BaseListData) : void
  1505.       {
  1506.          _listData = param1;
  1507.       }
  1508.    }
  1509. }
  1510.